// 版权归Epic Games, Inc.所有。保留所有权利。

#include "LyraAimSensitivityData.h"

#include "Settings/LyraSettingsShared.h"

#include UE_INLINE_GENERATED_CPP_BY_NAME(LyraAimSensitivityData)

/**
 * 构造函数，初始化灵敏度映射。
 * @param ObjectInitializer 对象初始化器
 */
ULyraAimSensitivityData::ULyraAimSensitivityData(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer) // 调用父类构造函数
{
	// 初始化灵敏度映射，将枚举值与对应的浮点数灵敏度关联
	SensitivityMap =
	{
		{ ELyraGamepadSensitivity::Slow,			0.5f }, // 慢速灵敏度
		{ ELyraGamepadSensitivity::SlowPlus,		0.75f }, // 慢速+灵敏度
		{ ELyraGamepadSensitivity::SlowPlusPlus,	0.9f }, // 慢速++灵敏度
		{ ELyraGamepadSensitivity::Normal,		1.0f }, // 普通灵敏度
		{ ELyraGamepadSensitivity::NormalPlus,	1.1f }, // 普通+灵敏度
		{ ELyraGamepadSensitivity::NormalPlusPlus,1.25f }, // 普通++灵敏度
		{ ELyraGamepadSensitivity::Fast,			1.5f }, // 快速灵敏度
		{ ELyraGamepadSensitivity::FastPlus,		1.75f }, // 快速+灵敏度
		{ ELyraGamepadSensitivity::FastPlusPlus,	2.0f }, // 快速++灵敏度
		{ ELyraGamepadSensitivity::Insane,		2.5f }, // 极快灵敏度
	};
}

/**
 * 将灵敏度枚举转换为浮点数值。
 * @param InSensitivity 输入的灵敏度枚举值
 * @return 对应的浮点数灵敏度值，如果未找到则返回1.0f
 */
const float ULyraAimSensitivityData::SensitivtyEnumToFloat(const ELyraGamepadSensitivity InSensitivity) const
{
	// 在映射中查找对应的灵敏度值
	if (const float* Sens = SensitivityMap.Find(InSensitivity))
	{
		return *Sens; // 返回找到的灵敏度值
	}

	return 1.0f; // 默认返回1.0f
}